#include "cabecera.h"
/*

struct lista* nuevoElemento();
void insertaDelante(struct lista** cabeza, int n);
void insertaDetras(struct lista** cabeza, int n);
int buscaElemento(struct lista* cabeza, int n);
void eliminaElemento(struct lista** cabeza, int n);
void eliminaLista(struct lista** cabeza);
void imprimeLista(struct lista* cabeza);
void insertaOrden(struct lista** cabeza, int n);

*/

int main(){
	struct lista* cabeza = NULL;
	int salir = 0, opcion, elemento;
	while(salir == 0){
		system("clear");
		printf("---- LISTA ----\n");
		printf("1.- Insertar elemento por delante.\n");
		printf("2.- Insertar elemento por detras.\n");
		printf("3.- Buscar un elemento en la lista.\n");
		printf("4.- Eliminar un elemento de la lista.\n");
		printf("5.- Eliminar la lista.\n");
		printf("6.- Imprimir la lista.\n");
		printf("7.- Insertar un elemento en una lista ordenada\n\n¿Que desea? ");
		scanf("%d", &opcion);
		printf("\n\n");
		switch(opcion){
			case 1: 
				printf("¿Que elemento desea introducir? ");
				scanf("%d", &elemento);
				insertaDelante(&cabeza, elemento);
				printf("Elemento introducido. Pulse INTRO para continuar.");
				getchar();
				getchar();
			break;
			case 2:
				printf("¿Que elemento desea introducir? ");
				scanf("%d", &elemento);
				insertaDetras(&cabeza, elemento);
				printf("Elemento introducido. Pulse INTRO para continuar.");
				getchar();
				getchar();				
			break;
			case 3:
				printf("¿Que elemento desea buscar? ");
				scanf("%d", &elemento);			
				if(buscaElemento(cabeza, elemento)){
					printf("El elemento se encuentra en la lista. Pulse INTRO para continuar.");
				}	
				else
				{
					printf("El elemento no se encuentra en la lista. Pulse INTRO para continuar.");
				}
				getchar();
				getchar();
			break;
			case 4:
				printf("¿Que elemento desea eliminar? ");
				scanf("%d", &elemento);			
				eliminaElemento(&cabeza, elemento);	
				printf("Elemento introducido. Pulse INTRO para continuar.");
				getchar();
				getchar();			
			break;
			case 5:
				eliminaLista(&cabeza);
				printf("Lista eliminada. Pulse INTRO para continuar.");
				getchar();
				getchar();					
			break;
			case 6:
				imprimeLista(cabeza);
				printf("Lista impresa por pantalla. Pulse INTRO para continuar.");
				getchar();
				getchar();
			break;
			case 7:
				printf("¿Que elemento desea introducir? ");
				scanf("%d", &elemento);
				insertaOrden(&cabeza, elemento);
				printf("Elemento introducido. Pulse INTRO para continuar.");
				getchar();
				getchar();	
			break;
		}
	}

	return 0;
}